"""
美多商城可能用到的功能
"""
from django.contrib.auth.decorators import login_required
from django.http import JsonResponse


class TimeOp:
    """时间运算"""

    @staticmethod
    def s2ms(second):
        """整数秒转成分秒的形式"""
        minute = second // 60
        second = second % 60
        return '%s 分 %s 秒' % (minute, second)

    @staticmethod
    def s2hms(second):
        """整数秒转成时分秒的形式"""
        minute = second // 60
        second = second % 60
        hour = minute // 60
        minute = minute % 60
        return '%s 时 %s 分 %s 秒' % (hour, minute, second)

    @staticmethod
    def s2dhms(second):
        """整数秒转成天时分秒的形式"""
        # 计算秒
        minute = second // 60
        second = second % 60
        # 计算分
        hour = minute // 60
        minute = minute % 60
        # 计算时、天
        day = hour // 24
        hour = hour % 24

        return '%s 天 %s 时 %s 分 %s 秒' % (day, hour, minute, second)

    def time_convert(time, format, unit='s'):
        """
            时间转换函数
            time 为时间，整数，单位默认为 秒。单位为 min 和 h 时，time 可以是小数
            format 为输出格式字符窜，使用 - 代表数字，如 '-小时-分钟-秒'
            unit time的单位，值可为‘s’ 'min' 'h'
        """
        pass


if __name__ == '__main__':
  print(TimeOp.s2ms(2000))
  print(TimeOp.s2hms(200000))
  print(TimeOp.s2dhms(200000))


class LoginRequiredMixin(object):
    """
    验证用户是否登录
    """

    @classmethod
    def as_view(cls, **initkwargs):
        return login_required(super().as_view())


class LoginRequiredJSONMixin(LoginRequiredMixin):
    """自定义判断用户是否登录的扩展类：返回JSON"""
    # 为什么只需要重写handle_no_permission？
    # 因为判断用户是否登录的操作，父类已经完成，子类只需要关心，如果用户未登录，对应怎样的操作
    def handle_no_permission(self):
        """直接响应JSON数据"""
        return JsonResponse({'code': 0, 'errmsg': '用户未登录'})
